package cn.hackcloud.dto;

import lombok.Data;

@Data
public class SentinelRule {
    /**
     * 资源的名称
     */
    private String resource;
    /**
     * controlBehavior 流量控制后的采取的行为
     * CONTROL_BEHAVIOR_DEFAULT(直接拒绝)、CONTROL_BEHAVIOR_WARM_UP(预热)、CONTROL_BEHAVIOR_RATE_LIMITER(匀速排队)、
     * CONTROL_BEHAVIOR_WARM_UP_RATE_LIMITER(预热与匀速排队)。
     */
    private int controlBehavior;
    /**
     * 阈值
     */
    private int count;
    /**
     * grade 流量控制的阈值类型
     * 可选值：QPS(基于QPS限流策略)、并发线程数。
     */
    private int grade;
    /**
     * 需要限制的调用来源，对应【新增流控规则界面】的针对来源。
     */
    private String limitApp;
    /**
     * strategy 基于调用链的流控制策略
     * 可选值：STRATEGY_DIRECT(根据调用方限流策略)、STRATEGY_RELATE(关联流量限
     * 流策略)、STRATEGY_CHAIN(根据调用链入口限流策略)
     */
    private int strategy;

    public SentinelRule(String resource, int controlBehavior, int count, int grade, String limitApp, int strategy) {
        this.resource = resource;
        this.controlBehavior = controlBehavior;
        this.count = count;
        this.grade = grade;
        this.limitApp = limitApp;
        this.strategy = strategy;
    }

    public SentinelRule() {
    }
}
